//
//  State Manager.h
//  GLSprite
//
//  Created by Daniel Polak on 7/15/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Vector.h"

#define SPLASHSTATE			1
#define MENUSTATE			2
#define GAMEPLAYSTATE		3
#define OPTIONSSTATE		4
#define TALLYSTATE			5
#define LEVELSELECTSTATE	6
#define WINLOSESTATE		7
#define LOADINGSTATE		8

@class BaseState; 

@interface StateManager : NSObject 
{
	//Going to make a vector of these, still need to make a vector object that can handle
	// all the shit we want it to.
	Vector* m_vStates;
	BaseState* m_pCurrentState;
	int m_nMyStateCheck;
}

@property (nonatomic, retain) Vector* m_vStates;
@property (nonatomic, retain) BaseState* m_pCurrentState;
@property int m_nMyState;

+ (int)MyState;
+ (StateManager*)stateManager;
- (void)Init;
- (void)PushState:(int)state;
- (void)PopState;
- (void)SetState:(BaseState*)newState;
- (void)Update;
- (void)Render;


@end
